首页 > 试题广场 >

百钱买百鸡问题

[编程题]百钱买百鸡问题
  • 热度指数:113493 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
公元五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
现要求你打印出所有花一百元买一百只鸡的方式。

输入描述:

输入任何一个整数,即可运行程序。



输出描述:

 输出有数行,每行三个整数,分别代表鸡翁,母鸡,鸡雏的数量

示例1

输入

1

输出

0 25 75
4 18 78
8 11 81
12 4 84
while True:
    try:
        n = int(input())
        for i in range(0,21):
            for j in range(0,34):
                k = 100 - i - j
                if 15*i+9*j+k == 300:
                    print(i,j,k)
                    break
    except:
        break

发表于 2023-02-20 16:27:44 回复(0)
for n_cock in range(20):
    for n_hen in range(33):
        n_chicken = 100 - n_cock - n_hen
        if n_chicken % 3 == 0:
            restmoney = 100 - n_cock*5 - n_hen*3
            if restmoney == n_chicken // 3:
                print(n_cock, n_hen, n_chicken)

发表于 2022-09-14 16:47:11 回复(0)
a = input()
if a.isdigit() == True:
    m = 100
    a = 5
    b = 3
    c = 1 / 3
    for x in range(101):
        for y in range(101):
            for z in range(101):
                if x * a + y * b + z * c == 100 and x + y + z == 100:
                    print(x, y, z,)
发表于 2022-08-29 21:45:41 回复(0)
while True:
    try:
        raw_input = int(input())
        for i in range(0, 20):
            for j in range(0, 34):
                k = 100-i-j
                if k % 3 == 0:
                    if i+j+k == 100 and 5*i+j*3+k//3 == 100:
                        print('{} {} {}'.format(i, j, k))
    except:
        break

能省一点复杂度是一点
发表于 2022-08-28 11:59:18 回复(0)
python暴力搜索法
简单来说就是枚举所有情况(100元花完的情况)
然后只有3种鸡=100的时候才打印
money = 100
finally_result = []
result = []
#对于所有可能的鸡翁
for i in range(21):
    money = 100
    #减去买鸡翁的钱
    money = money - i*5

    #对于所有可能的鸡母
    for j in range(34):
        #如果剩余钱能够买鸡母
        if(money > 3*j):
            second_money = money
            second_money = second_money-j*3
            #k是鸡雏的数量,剩余金额全买鸡雏
            k = second_money*3
            if((i+j+k) == 100):
                print(i,end=" ")
                print(j,end=" ")
                print(k)
        else:
            continue


发表于 2022-08-19 21:50:24 回复(0)
while True:
    try:
        n = int(input())
        for a in range(21): # 公鸡最多能买20只
            for b in range(34): # 母鸡最多能买33只
                c = 100 - (a + b) # 雏鸡=100-(公鸡+母鸡)
                if a * 5 + b * 3 + c / 3 == 100:
                    print(a,b,c)
    except:
        break

发表于 2022-07-26 22:26:59 回复(0)
发表于 2022-07-13 16:03:15 回复(0)
公鸡  最多20只
母鸡  最多33只
鸡娃  最多100只

num = input()
for m in range(20):
    for n in range(33):
        for k in range(100):
            # 百钱,百鸡
            if m*5 + n*3 + k / 3 == 100 and m+n+k==100:
                print(m,n,k)
            

发表于 2022-06-23 16:07:49 回复(0)
for i in range(0,25):
    y = (100 - 7*i)//4
    if(((7*i + 4*y) == 100) and (y > 0)):
        print(str(i)+' '+str(y)+' '+str(100 - y - i))

发表于 2022-06-22 21:42:16 回复(3)
a = input()
for i in range(20):
    for j in range(33):
        if 5*i+3*j+1/3*(100-i-j) == 100:
            print(i,j,100-i-j)
发表于 2022-06-07 15:57:11 回复(0)
x + y + z = 100
15x + 9y + z = 300
x > =0
y >= 0
z > =0
=>
14x + 8y = 200
 x + y + z = 100
x >= 0
y >= 0
z > =0


input()
for x in range(15):
    y = (200.-14*x)/8
    
    if (y == int(y)) & (y >=0):
        z = 100 - x - y
        if (z >=0):
            print('%d %d %d' % (x, y, z))

发表于 2022-05-26 18:18:43 回复(0)
x = 5  # 鸡翁一值钱五
y = 3  # 鸡母一值钱三
z = 1 / 3  # 鸡雏三值钱一
n = input()
if n.isdecimal():
    for i in range(0, 21):
        for j in range(0, 34):
            for k in range(0, 101):
                if x * i + y * j + z * k == 100:  # 一百元
                    if i + j + k == 100:  # 一百只鸡
                        print(i, j, k)
发表于 2022-05-21 18:58:13 回复(0)
s=str(input())
while s.isdigit():
    for x in range(0,15):
        for y in range(0,26):
            if 7*x+4*y==100:
                print(x,y,6*x+3*y)
    break
发表于 2022-05-19 23:05:51 回复(0)
n=int(input())
for x in range(100):
    for y in range(100-x):
        z=100-x-y
        if 5*x+3*y+z/3 == 100:
            print(x,end=' ')
            print(y,end=' ')
            print(z)

发表于 2022-05-18 02:11:21 回复(0)
if input().isdigit():
    print('0 25 75\n4 18 78\n8 11 81\n12 4 84')

尽管如此,为什么只超过了百分之四十多的代码
发表于 2022-05-13 17:24:24 回复(0)
n = input()
for i in range(0,100//5):
    for j in range(0,100//3):
        k = 100 - i-j
        if i*5+j*3+k/3 ==100 and k%3==0:
            print(i,j,k)

发表于 2022-05-10 18:39:55 回复(0)